package com.lzh.persevere.model.vo.comment;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * @author luzhiheng
 * @since 2025-07-08
 */
@Data
public class CommentVO {

    /**
     * 评论ID
     */
    private Long id;

    /**
     * 模块ID
     */
    private String moduleId;

    /**
     * 根评论ID：为空表示顶级评论；不为空表示顶级评论ID
     */
    private Long rootCommentId;

    /**
     * 回复目标评论ID
     */
    private Long toCommentId;
    /**
     * 回复目标用户ID
     */
    private Long toCommentUserId;

    /**
     * 回复目标评论的用户昵称
     */
    private String toCommentUserNickname;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 评论内容
     */
    private String content;

    /**
     * 点赞次数
     */
    private Integer likeCount;

    /**
     * 点踩次数
     */
    private Integer dislikeCount;

    /**
     * IP地址
     */
    private String ip;

    /**
     * 城市信息
     */
    private String city;

    /**
     * 子集评论数
     */
    private Integer subCommentCount;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 创建人ID
     */
    private String createUserId;

    /**
     * 创建人昵称
     */
    private String createUserNickname;

    @ApiModelProperty(value = "子集评论")
    private List<CommentVO> replies;

    @ApiModelProperty(value = "图片文件ID列表")
    private String images;

    @ApiModelProperty(value = "图片地址列表")
    private List<String> imageList;

    @ApiModelProperty(value = "当前登录用户是否点赞该评论")
    private Boolean isLike = false;

    @ApiModelProperty(value = "当前登录用户是否点踩该评论")
    private Boolean isDislike = false;
}
